import { joinUrlQuery } from '@common/utils'
import { httpConfig } from './config.js'

const showToast = (title) => {
    uni.showToast({
        title: title,
        icon: 'none'
    })
}

// 保证对话框只有一个
let showModal = false

const Http = (options) => {
    let hideLoading = options.hideLoading || false // 是否显示 loading
    let hideMsg = options.hideMsg || false // 是否隐藏错误提示
    let requestType = options.requestType || 'request'

    let token = '' // 登录鉴权获得的 token
    let params = ''
    uni.getStorage({
        key: 'token',
        success: (res) => {
            token = res.data
        }
    })
    if (!hideLoading) {
        uni.showLoading({
            title: '加载中...',
            mask: true
        })
    }
    if (options.data) {
        params = joinUrlQuery(options.data)
    }
    // 入参
    console.log(params);
    return new Promise((resolve, reject) => {
        uni.request({
            url: httpConfig.host + options.url, // 请求url
            method: options.method || 'POST', // 默认 post 请求
            header: options.header ? options.header : {
                'content-type': 'application/x-www-form-urlencoded'
            },
            data: options.data,
            success: (res) => { // 服务器成功返回的回调函数
                if (!hideLoading) uni.hideLoading()
                if (res.statusCode === 200) {
                    if (+res.data.result === 0) {
                        resolve(res.data.data)
                        return
                    }
                    if (+res.data.result === 104) {
                        if (!showModal) {
                            uni.removeStorageSync('token')
                            // 未登录直接跳转授权页
                            uni.navigateTo({
                                url: '/pages/my/auth'
                            })
                            showModal = true;
                        }
                        return
                    } else {
                        res.data.data && showToast(res.data.data)
                    }
                    if (!hideMsg) showToast(result.errmsg)
                } else { // 返回值非 200，强制显示提示信息
                    showToast('[' + res.statusCode + '] 系统处理失败')
                }
            },
            fail: (err) => { // 接口调用失败的回调函数
                if (!hideLoading) uni.hideLoading()
                if (err.errMsg != 'request:fail abort') {
                    showToast('连接超时，请检查您的网络。')
                }
            }
        })
    })
}
export default Http